Domain-specific language & support tools for high-level stream parallelism
نویسنده
چکیده
Stream-based systems are representative of several different application domains including video, networking, audio, graphic processing, etc. Stream parallel programs may run on different kinds of parallel architectures (desktop, servers, cell phones, and supercomputers) and represent significant workloads on our current computing systems. Nevertheless, most of them are still not parallelized. Moreover, when a new one has to be developed, programmers have to face a trade-off between coding productivity, coding portability, and performance. To solve this problem, we provide a new Domain-Specific Language (DSL) that naturally/on-the-fly captures and represents parallelism for stream-based applications. The aim is to offer a set of attributes (through annotations) that preserves the source code of the program and is not architecturedependent. We used the C++ attribute mechanism to design a “de-facto” standard C++ embedded DSL named as SPar. However, the implementation of DSLs using compiler-based tools is difficult, complicated and usually requires a significant learning curve. This is even harder for those that are not familiar with compiler technology. Our motivation is, therefore, to simplify this path for other researchers (experts in their domain) with support tools (our tool is CINCLE) to implement high-level and productive DSLs through powerful and aggressive source-to-source transformations. In fact, parallel programmers can use their expertise without having to design and implement the low-level code. The principal goal of the thesis was to create a DSL and support tools for high-level stream parallelism in the context of a programming framework that is compiler-based and domain-oriented. Thus, we implemented Spar using CINCLE. SPar supports the software developer with productivity, performance and code portability while CINCLE provides sufficient support to generate new DSLs. Also, SPar targets source-tosource transformation producing parallel pattern code implemented on top of FastFlow and MPI. Finally, we have a full set of experiments that shows that SPar provides better coding productivity without significant performance degradation in multi-core systems as well as transformation rules that are able to achieve code portability through its attributes. DEFESA DE TESE Programa de Pós Graduação em Ciência da Computação
منابع مشابه
SPar: A DSL for High-Level and Productive Stream Parallelism
This paper introduces SPar, an internal C++ Domain-Specific Language (DSL) that supports the development of classic stream parallel applications. The DSL uses standard C++ attributes to introduce annotations tagging the notable components of stream parallel applications: stream sources and stream processing stages. A set of tools process SPar code (C++ annotated code using the SPar attributes) ...
متن کاملDSL-based Design Space Exploration for Temporal and Spatial Parallelism of Custom Stream Computing
Stream computation is one of the approaches suitable for FPGA-based custom computing due to its high throughput capability brought by pipelining with regular memory access. To increase performance of iterative stream computation, we can exploit both temporal and spatial parallelism by deepening and duplicating pipelines, respectively. However, the performance is constrained by several factors i...
متن کاملMultigame — A Very High Level Language for Describing Board Games
Languages with implicit parallelism are easier to program in than those with explicit parallelism, but finding and efficiently exploiting parallelism in general-purpose programming languages by parallelizing compilers is hard. A compiler for a Very High Level Language, designed for a specific application domain, has more knowledge about its application domain and may use this knowledge to gener...
متن کاملHigh-Productivity Stream Programming For High-Performance Systems
Applications that are structured around some notion of a " stream " are increasingly prevalent to common computing practices, and there is evidence that streaming media applications already consume a substantial fraction of the computation cycles on consumer machines [6]. Furthermore, stream processing—of voice and video data—is central to a plethora of embedded systems, including hand-held com...
متن کاملSynthesising and Verifying Multi-Core Parallelism in Categories of Nested Code Graphs
We present the Multi-Core layer of the larger Coconut project to support high-performance, high-assurance scientific computation. Programs are represented by nested code graphs, using domain specific languages. At the Multi-Core level, the language is very restricted, in order to restrict control flow to nonbranching, synchronising control flow, which allows us to treat multi-core parallelism i...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2016